Redis Cluster(Redis 集群)的搭建

Redis Cluster(Redis 集群)的搭建

四月 06, 2020 阅读数(请刷新)

1、redis-cluster(redis集群)

redis-cluster投票容错机制:Redis 之间通过互相的 ping-pong 判断是否节点可以连接上。如果有一半以上的节点去ping 一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的从节点(必须主备模式)。
如果某个节点和所有从节点全部挂掉,集群就进入 fail 状态。 如果有一半以上的主节点宕机,那么集群同样进入 fail 了状态。
由于投票容错机制集群最少需要3个节点

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

根据Redis槽的概念集群最多16384个

2、集群搭建

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机,因此Redis集群至少需要6台服务器。
搭建伪分布式。使用一台虚拟机运行6个redis实例。需要修改redis的端口号为7001-7006.
在/usr/local目录下创建redis-cluster目录,并将redis目录下的redis安装文件复制到redis-cluster目录

1
2
3
cd /usr/local
mkdir redis-cluster
cp redis/bin redis-cluster/redis01 -r

删除复制文件中的数据文件包括dump.rdb和.aof文件

1
2
cd /usr/local/redis-cluster/redis01
rm -f dump.rdb


修改redis.conf文件

1
2
3
4
vim redis.conf
#修改端口号
port 7001
#将 cluster-enabled yes的注释打开


将redis01再复制5份

1
2
3
4
cd ..
cp -r redis01/ redis02
...
cp -r redis01/ redis06

分别修改端口号为7002-7006

批处理启动6个redis服务

1
2
#创建一个批处理文件
vim start-all.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
加入代码
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
#保存退出


现在文件还不能执行,需要授权

1
chmod u+x start-all.sh

、

1
2
#执行
./start-all.sh
1
2
查看是否启动成功
ps aux|grep redis


搭建集群需要redis源文件的.rb脚本
找到redis源文件中的src/redis-trib.rb文件,并将之复制到redis-cluster目录下

1
2
cd  /usr/local/redis/redis-5.0.3/src
cp redis-trib.rb /usr/local/redis-cluster/


因为使用的是ruby脚本搭建服务器,所以需要ruby环境

2.1、安装ruby环境
1
2
3
#这两个旧版本先别装会报错,往后看,装新版本
yum install ruby
yum install rubygems

下载 redis-3.0.0.gem
下载链接:redis-3.0.0.gem
提取码:fs2u
将redis-3.0.0.gem传到linux系统下并安装
安装gem install redis-3.0.0.gem
执行redis-trib.rb脚本文件

1
./redis-trib.rb create --replicas 1 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 ip:7006

报错

ruby版本问题
卸载低版本

1
2
yum remove -y ruby
yum remove -y rubygems

官网下载新版本
ruby

1
2
3
4
5
6
7
#解压

tar –zxvf ruby-2.6.6.tar.gz
cd ruby-2.6.6
./configure
make
make install

进入任意redis实例

1
2
3
cd redis01
#新版本命令修改为
./redis-cli --cluster create ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 ip:7006 --cluster-replicas 1


这儿有个坑!!!下面是输入yes分配槽,只输y不行

2.2、连接节点操作数据库

进入任意实例使用redis-cli连接节点

1
2
cd redis01
./redis-cli -h ip地址 -p 7001 -c


计算出槽后将数据放在了7003上

一、Redis服务器搭建与学习
三、SSM整合Redis Cluster(Redis集群)
四、Redis集群踩的坑及报错记录并解决